#pragma once

#include "LvDevice.hpp"
#include "LvGameObject.h"
#include "LvPipeline.h"
#include "LvCamera.h"

#include <memory>
#include <vector>


class SimpleRenderSystem
{
public:
	SimpleRenderSystem(LvDevice& device, VkRenderPass renderPass);
	~SimpleRenderSystem();

	SimpleRenderSystem(const SimpleRenderSystem&) = delete;
	SimpleRenderSystem& operator=(const SimpleRenderSystem&) = delete;

	void renderGameObjects(VkCommandBuffer commandBuffer, std::vector<LvGameObject>& gameObjects, const LvCamera& camera);

private:
	void createPipelineLayout();
	void createPipeline(VkRenderPass renderPass);

	LvDevice& lvDevice;

	std::unique_ptr<LvPipeline> lvPipeline;
	VkPipelineLayout pipelineLayout;

};

